{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# plot_confusion_matrix: Visualize confusion matrices"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Utility function for visualizing confusion matrices via matplotlib"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> `from mlxtend.plotting import plot_confusion_matrix`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Confusion Matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For more information on confusion matrices, please see [`mlxtend.evaluate.confusion_matrix`](../evaluate/confusion_matrix.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n",
    "\n",
    "- -"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Binary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.plotting import plot_confusion_matrix\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "binary1 = np.array([[4, 1],\n",
    "                    [1, 2]])\n",
    "\n",
    "fig, ax = plot_confusion_matrix(conf_mat=binary1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "binary2 = np.array([[21, 1],\n",
    "                    [3, 1]])\n",
    "\n",
    "fig, ax = plot_confusion_matrix(conf_mat=binary2, figsize=(2, 2))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Binary absolute and relative with colorbar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "binary = np.array([[4, 1],\n",
    "                   [1, 2]])\n",
    "\n",
    "fig, ax = plot_confusion_matrix(conf_mat=binary,\n",
    "                                show_absolute=True,\n",
    "                                show_normed=True,\n",
    "                                colorbar=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 3 - Multiclass relative"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "multiclass = np.array([[2, 1, 0, 0],\n",
    "                       [1, 2, 0, 0],\n",
    "                       [0, 0, 1, 0],\n",
    "                       [0, 0, 0, 1]])\n",
    "\n",
    "fig, ax = plot_confusion_matrix(conf_mat=multiclass,\n",
    "                                colorbar=True,\n",
    "                                show_absolute=False,\n",
    "                                show_normed=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 4 - Add Class Names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "multiclass = np.array([[2, 1, 0, 0],\n",
    "                       [1, 2, 0, 0],\n",
    "                       [0, 0, 1, 0],\n",
    "                       [0, 0, 0, 1]])\n",
    "\n",
    "class_names = ['class a', 'class b', 'class c', 'class d']\n",
    "\n",
    "fig, ax = plot_confusion_matrix(conf_mat=multiclass,\n",
    "                                colorbar=True,\n",
    "                                show_absolute=False,\n",
    "                                show_normed=True,\n",
    "                                class_names=class_names)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 5 - Changing Color Maps and Font Color"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Matplotlib color maps can be chosen as alternative color map via the `cmap` argument. A list of colormaps can be found here: https://matplotlib.org/stable/tutorials/colors/colormaps.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "multiclass = np.array([[2, 1, 0, 0],\n",
    "                       [1, 2, 0, 0],\n",
    "                       [0, 0, 1, 0],\n",
    "                       [0, 0, 0, 1]])\n",
    "\n",
    "fig, ax = plot_confusion_matrix(conf_mat=multiclass,\n",
    "                                colorbar=True,\n",
    "                                cmap='summer')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As shown above, the font color threshold may not work for certain color maps. By default all values larger than 0.5 times the maximum cell value are converted to white, and everything equal or smaller than 0.5 times the maximum cell value are converted to black.\n",
    "\n",
    "If you want to change all values above to e.g., white, you can set the color threshold to a negative number. Or, if you want to make all the font colors black, choose ta threshold equal to or greater than 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plot_confusion_matrix(conf_mat=multiclass,\n",
    "                                colorbar=True,\n",
    "                                fontcolor_threshold=1,\n",
    "                                cmap='summer')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 6 - Normalizing Colormaps to Highlight Off-Diagonals"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose we have the following confusion matrix for a high-accuracy classifier:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAATQAAAErCAYAAABQAX/RAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA9aklEQVR4nO3dd3hUVfrA8e+bhCAQqoBCAtKUEnoSiiICoihNkL6iFBuWdbGuZW1rQ9FFFPdnW9eGwoKrFBWwoqBU6bAICkgCKqigoZgwvL8/zk0cQwgJuTMTJ+/nefJk5s6d+5475Z1zzj33XFFVjDEmGsREugDGGOMXS2jGmKhhCc0YEzUsoRljooYlNGNM1LCEZoyJGnGRLkC0kbIVVcqfGJHYbRpUj0hcY8Ltiy+W71bVGnmXW0LzmZQ/kRPOvisisRdOGR2RuMaEW7kysi2/5dbkNMZEDUtoxpioYQnNGBM1LKEZY6KGJTRjTNSwhGaMiRqW0IwxUcMSmjEmalhCM8ZEDUtoYXZ1z2Ys/Ud/lk3ozzW9mgHw8vVdWDT+AhaNv4AN/xzEovEXANCtZW0WPtyXJY/1Y+HDfTmrea2QlGne3Dm0TG5McpNGjH9kXEhiHM2Vl42mbu2apLRuHta4FjsysQ8ePEinju1o17YVbVslc9+9d/u6/T9UQhORd0SkShGf86KIDAxRkYqkWZ0qjOremM63zqT9jW9xfkpdGp5ciUsmfEyHm2fQ4eYZvLVoGzMWu7M6fvjlIAPHvUe7G9/i8kmf8K8/d/a9TIFAgLHXXcOMWe+yYvV6pk15nQ3r1/se52guHjGSGbPnhC2exY5s7LJlyzLnvQ9Z8sUqFi9byby5c1i8aJFv2/9DJTRV7amqe4KXifOH2I/GSVVY+uX3HMgKEDisLFi/k77tT/ndOgNOr8d/FnwNwKotP7LzpwMArN++h7LxscTH+burS5csoWHDRtRv0ID4+HgGDRnK7FkzfI1RkE5ndqZatWphi2exIxtbREhISAAgOzubQ9nZiIhv2y+xiUBE3hKR5SKyTkSu8JZtFZHqIlJPRDaIyD+BL4A6IpIpIo+JyBci8oGIHHEmvojcJSJLRWStiDwr3ispIh+LyMMiskREvhSRM73lsSIy3nvOahG5sjj7tP6bnzij2clUSyhLufhYerSpQ9KJFXIfP6PpSXy/9yBfffvzEc/t16Eeq7b8SNahw8UpwhF27MggKalO7v3ExCQyMjJ8jWFMsEAgQPuU1tStXZNu3c+hXfv2vm27xCY0YLSqpgCpwHUikndOnsbAy6raRlW3ARWAL1S1LTAfyK9xPklV01S1OVAO6B30WJyqtgPGBj33UmCvqqYBacDlIlI/70ZF5AoRWSYiy/g186g7tDFjL/94azWz7+rBjL/1YM22Hzl0+LcENbhTg9zaWbCmSVW4f3gqf35m4VG3fbzyu+qXn7+YxuQVGxvL4uUr2bw1nWVLl7Bu7Vrftl2SE9p1IrIKWATUAU7N8/g2VQ1ufB8Gpnq3XwU65bPNriKyWETWAN2A5KDH/uv9Xw7U826fC1wiIiuBxcCJ+ZQDVX1WVVNVNZWyCQXu1EsfbuL0W2Zy7l3v8FPmr3y109XGYmOEvu3r8cbC3ye0xGrlmXLL2Vz25Cds+e6XArd9PBITk0hP3557PyMjndq1a/sex5i8qlSpQuezujBvnn/9eSUyoYlIF6A70FFVWwErgBPyrLbvGJv5XdVDRE4A/gkMVNUWwHN5tvmr9z/Ab/PECfBnVW3t/dVX1XlF3J3fqVHJhUyqXoG+7U/JrZF1a1mbLzP2kPHj/tx1K5eP543bz+WuyctYtPH74oQ9qtS0NDZv3sTWLVvIyspi2tQp9OrdNySxjNm1axd79uwB4MCBA3z4wfs0btzEt+2XyIQGVAZ+UtX9ItIE6FCI58QAOUcz/wQsyPN4TvLaLSIJQesWZC5wlYiUARCR00SkwjGeU6DXbu7G8gn9mX7rOVz//Ofs2ZcFwMAzGjAtT+1szPlNaXhyRW4b2Dp3WEdOQvRLXFwcEyZOok+vHrRu0ZQBgwbTLDn52E/0ySXDh9HlzI58uXEjDesl8eIL/7LYURz72507Oa97V9LatKRTxzTO7n4OPXv1PvYTC0lK4pXTRaQs8BaQCGwEagD3AC/i+tQSgNleX1jOczKBCUBPYC8wRFV3iciL3rrTReR+YCiwFdiOa7beIyIfAzep6jIRqQ4sU9V63tHT+4E+uNraLqCfqu49WtljqtbTSM1Y+6PNWGtKiXJlZLmqpuZdXiIT2vEQkUxVLbgDKwwsoRkTekdLaCW1yWmMMUUWNQmtJNTOjDGRFTUJzRhjLKEZY6KGJTRjTNSwhGaMiRqW0IwxUcMSmjEmalhCM8ZEjbhjr2KKok2D6iyM0Ij9qmnXRiQuwE9LJ0UstjE5rIZmjIkaltCMMVHDEpoxJmpYQjPGRA1LaMaYqGEJzRgTNSyhGWOihiU0Y0zUsIRmjIkaltCMMVHDEpoxJmpYQish5s2dQ8vkxiQ3acT4R8b5ss2n776IbR88xLJpt+cuu7B7G5ZPv4N9y5+gbbO6ucu7tW/Cwsm3sPQ/t7Nw8i2clXZa7mMzJl3N4qm3snz6HTxxx1BiYsSX8gEcPHiQTh3b0a5tK9q2Sua+e+/2bdvHcuVlo6lbuyYprZsfe+UQCMV7XhiR3O/t27fTo3tXWrdoSttWyUx6YqKv2y8xCU1E+olIsxDHqCcia4/y2PM58UVkq3d9zrAIBAKMve4aZsx6lxWr1zNtyutsWL++2Nt9ZdYiLrjmqd8tW/fVDobe+BwLvvjqd8t/2JPJwLHPkDb4QS6/6xVeuP+S3MeG//UF2g8ZR8rAB6hRNYEB57QtdtlylC1bljnvfciSL1axeNlK5s2dw+JFi3zbfkEuHjGSGbPnhCVWXqF6zwsjkvsdFxfHuEceY+WaDcxfsIhnnn7K1/0uMQkN6AeENKEVRFUvU9XwfKLyWLpkCQ0bNqJ+gwbEx8czaMhQZs+aUeztLvziK37cu/93yzZu+Y5N274/Yt1VG9PZuctdP3n9VzspG1+G+DJuMpZf9h0EIC4uhjJxsfh5LVcRISHBXbArOzubQ9nZiPhXAyxIpzM7U61atbDEyitU73lhRHK/a9WqRZu27gexYsWKNGnSlB07MnzbfkgTmoi8JSLLRWSdiFzhLcsMenygiLwoIqcDfYHxIrJSRBqKSGsRWSQiq0XkTRGp6j3nYxGZICKfiMgGEUkTkf+KyCbvyug5275BRNZ6f2ODihUnIi95250uIuWDtnvklZhFhovIEq9cz4hIrN+v044dGSQl1cm9n5iYREaGf29yUfXv3ppVG7eTlX0od9nMp67hmw/Gkbn/V/77/gpf4wUCAdqntKZu7Zp0634O7dq393X7JVFJe88jYdvWraxcuYK0dv6936GuoY1W1RQgFbhORE7MbyVV/QyYCdysqq1V9SvgZeCvqtoSWAMEd65kqWpn4GlgBnAN0BwYKSInikgKMApoD3QALheRNt5zGwPPetv9Gbj6aIUXkabAEOAMVW0NBICL8lnvChFZJiLLdu3eVagXJs/+5xe7yNvxQ9MGJ3P/dRdw7f1Tfre87zVPUf+c2ykbH0eXtMa+xoyNjWXx8pVs3prOsqVLWLc2316BqFKS3vNIyMzMZNjgAYx/7HEqVark23ZDndCuE5FVwCKgDnBqYZ4kIpWBKqo631v0EtA5aJWZ3v81wDpV3amqvwJfe3E6AW+q6j5VzQT+C5zpPWe7qi70br/qrXs0ZwMpwFIRWendb5B3JVV9VlVTVTW1RvUahdnF30lMTCI9fXvu/YyMdGrXrl3k7RRXYs0qTP3HFVx25ytsSd99xOO/Zh1i9vw19OnSIiTxq1SpQuezujBvXmT6d8KppLznkZCdnc2wwQMYMuwi+vW/0NdthyyhiUgXoDvQUVVbASuAE4Dgn6YTjnPzv3r/DwfdzrkfBxT0U5f3p7GgDiEBXvJqja1VtbGq3lPUwh5LaloamzdvYuuWLWRlZTFt6hR69e7rd5gCVU4ox3+fHMNdT87k81Vf5y6vUC6ek6u7X9DY2BjOO6MZG7d+51vcXbt2sWfPHgAOHDjAhx+8T+PGTXzbfklVEt7zSFBVxlx+KY2bNOUv19/g+/ZDWUOrDPykqvtFpAmu6QfwnYg0FZEYoH/Q+r8AFQFUdS/wk4jk1KouBuZTeJ8A/USkvIhU8OJ86j1WV0Q6ereHAQsK2M4HwEARqQkgItVE5JQilKNQ4uLimDBxEn169aB1i6YMGDSYZsnJxd7uSw+N5OOXbuS0U05i85z7GNGvI327tmTznPto37Ie/31iDDOfugaAMUM707BODW69/DwWTbmVRVNupUbVBCqUK8v0x69kydTbWDL1Nnb9lMlz0wt6yYrm2507Oa97V9LatKRTxzTO7n4OPXv19m37Bblk+DC6nNmRLzdupGG9JF584V9hiQuhe88LI5L7/dnChbw2+RXmf/Qh7VNa0z6lNXPefce37YufR6x+t2GRssBbQCKwEagB3ANUBx4GtgNrgQRVHSkiZwDP4WpcA3HJ7WmgPK4pOUpVfxKRj4GbVHWZVwu8SVV7ezGDH7sByJnc/3lVfVxE6gHv4BLe6cAm4GIv6QY/dyuQqqq7RWQIcBsu+WcD16jqUccVpKSk6sLFy4rxyh0/u6aAKS3KlZHlqnrkQbxQJbTSyhKaMaF3tIRWksahGWNMsVhCM8ZEDUtoxpioYQnNGBM1LKEZY6KGJTRjTNSwhGaMiRqW0IwxUcMSmjEmasRFugDGP5EcrV+112MRi/3T2zdGLLYpWayGZoyJGpbQjDFRwxKaMSZqWEIzxkQNS2jGmKhhCc0YEzUsoRljooYlNGNM1LCEZoyJGpbQjDFRwxKaMSZqWEIrAbZv306P7l1p3aIpbVslM+mJiWGNP2/uHFomNya5SSPGPzLOl20+fUMPtk29imXPjMhdVrXiCcx+aCBrXhjN7IcGUiWhLADd2p7CwknDWfr0JSycNJyzWtXJfc7cRwaz6vlRLPrnxSz658XUqFzOl/JBaPb7jxI/UrGvvGw0dWvXJKV185Bsv1QlNBGpJyJr81n+vIg0K8TzR4qI72eAx8XFMe6Rx1i5ZgPzFyzimaefYsP69X6HyVcgEGDsddcwY9a7rFi9nmlTXvcl9ivz1nLBHW/8btlNg9vx8YpvaDH6BT5e8Q03DWkHwA97DzDwrjdJG/Myl49/lxduOf93zxv18Dt0uPoVOlz9Crv2Hih22SB0+/1HiB/J2BePGMmM2XNCtv1SldCORlUvU9Uj3lERiQ1H/Fq1atGmbVsAKlasSJMmTdmxIyMcoVm6ZAkNGzaifoMGxMfHM2jIUGbPmlHs7S5cm8GPvxz83bLeHRvy6vvrAHj1/XX06dgIgFVffc/OH/cBsH7bD5SNjyO+TGhf+lDt9x8hfiRjdzqzM9WqVQvZ9ktjQosTkZdEZLWITBeR8iLysYikAohIpoj8XUQWAx1FZJSIfCki84EzQl24bVu3snLlCtLatQ91KAB27MggKem3Jl5iYhIZGaFJpjWrludbL3F9++M+alQpf8Q6/TudyqqvvicrO5C77Jkbe7Donxdz6586+FaWcO53SYsf6X0PpdKY0BoDz6pqS+Bn4Oo8j1cA1qpqe+Ar4F5cIjsHyLdZKiJXiMgyEVm2a/eu4y5YZmYmwwYPYPxjj1OpUqXj3k5RqOoRy0QkLLHzanrKidx/aWeunfhe7rJRD79D2piX6X7jFM5onsifuh+zZ6BQIr3fkYwf6X0PpdKY0Lar6kLv9qtApzyPB4Cczp/2wMequktVs4Cp+W1QVZ9V1VRVTa1RvcZxFSo7O5thgwcwZNhF9Ot/4XFt43gkJiaRnr49935GRjq1a9cOSazvf9rPydUqAHBytQrs2rP/t3JUT2DqXX25bPy7bNm5N3f5jh8yAcg8kM3Uj/5HWuOTfSlLOPe7pMWP9L6HUmlMaHl/nvLeP6iqgQIe952qMubyS2ncpCl/uf6GUIf7ndS0NDZv3sTWLVvIyspi2tQp9OrdNySx3l70FcO7JwMwvHsysz//CoDKFcry3/v6c9e/F/D5+h2568fGCCdWckc142Jj6Nm+Aeu27valLOHc75IWP9L7HkqlcQruuiLSUVU/B4YBC4A+R1l3MTBRRE7ENU8HAav8LtBnCxfy2uRXaN68Be1TWgNw7/0Pct75Pf0OdYS4uDgmTJxEn149CAQCjBg5mmbJycXe7ku39uLMlklUr1yOza9ewX2vfMajU5fw6h29GXFec7Z//zMXPTAbgDF9W9OwdlVu/VOH3H6yPrdNZ9/BbGY+OIAysTHExgofffENL7y7pthlg9Dt9x8hfiRjXzJ8GJ/O/5jdu3fTsF4Sd951LyNHX+rb9iW/9nS0EpF6wDvAJ8DpwCbgYm/ZTaq6TEQyVTUh6DmjgNuAncBKIFZVrz1ajJSUVF24eFnI9qGksmsKmHAqV0aWq2pq3uWlqoamqlvJv2O/S9A6CcEPqOq/gX+HtGDGGF+Uxj40Y0yUsoRmjIkaltCMMVHDEpoxJmoc9aCAiPzCb2OwcoYRq3dbVTU8Q9mNMaaQjprQVLViOAtijDHFVagmp4h08sZjISLVRaR+aItljDFFd8yEJiJ3A3/FDS4FiMedA2mMMSVKYWpo/YG+wD4AVd0BWHPUGFPiFOZMgSxVVRFRABGpEOIymT+gSJ5+VPWCJyMWG+CnGX+OaHzzm8LU0P4jIs8AVUTkcuB94LnQFssYY4rumDU0VX1URM7BzTZxGnCXqr53jKcZY0zYFfbk9DVAOdw4NH/mbzHGGJ8V5ijnZcAS4EJgILBIREaHumDGGFNUhamh3Qy0UdUfALzJDj8DXghlwYwxpqgKc1AgHfgl6P4vwPajrGuMMRFT0LmcOZPbZwCLRWQGrg/tAlwT1BhjSpSCmpw5g2e/8v5yhO9qrMYYUwQFnZx+bzgLYowxxXXMgwIiUgO4BUgGTshZrqrdQlguY4wpssIcFJgM/A+oj7uK+FZgaQjLZIwxx6UwCe1EVf0XkK2q81V1NNAhxOUqdebNnUPL5MYkN2nE+EfGWexiePovZ7Nt8qUse+pPucuqJpRl9v0XsObZi5l9/wVUSSib+9hNg1JY+9zFrHpmON3b1s1dPveh/qx6ZjiLnhzKoieHUqNyOV/KlyNSr/v27dvp0b0rrVs0pW2rZCY9MTFssSG0+12YhJbt/d8pIr1EpA2Q5GspSjgR6SIip4dq+4FAgLHXXcOMWe+yYvV6pk15nQ3r14cqXNTHfuX9DVxw18zfLbtpUAofr0qnxRWv8PGqdG4alAJAkzpVGdT5NNpeNZm+d81k4tVdiImR3OeNGj+PDn+eQoc/T2HX3gPFLluOSL7ucXFxjHvkMVau2cD8BYt45umn/vDveY7CJLT7RaQycCNwE/A8cL1vJfhj6IK7MHFILF2yhIYNG1G/QQPi4+MZNGQos2eF52ByNMZeuG4HP/5y8HfLendowKvvbwDg1fc30KdDg9zl0z75kqxDh9n23c98tWMPaaedVOwyHEskX/datWrRpm1bACpWrEiTJk3ZsSMjLLFDvd/HTGiqOltV96rqWlXtqqopqjrzWM/7IxCRS0RktYisEpFXRKSPiCwWkRUi8r6InORdbX0McL2IrBSRM/0ux44dGSQl1cm9n5iYREZGeD5gpSV2zSrl+fan/QB8+9N+alRxzcfEExNI352Zu17GD5nUPvG3GbKeuf5sFj05lFuHpvlanki+7sG2bd3KypUrSGvXPizxQr3fBQ2sfZLfLpJyBFW9zrdSRICIJAN3AGeo6m4RqYbb3w7e/G+XAbeo6o0i8jSQqaqPHmVbVwBXANSpWze/VQqkeuTLLCL5rOm/0hr7t4BHLsop1qhH57Hjh30klCvD67f35E/dmvDah//zJWxJ2PfMzEyGDR7A+Mcep1Kl8FzzKNT7XdCwjWW+RSmZugHTVXU3gKr+KCItgKkiUgs31fiWwmxIVZ8FngVISUk96o/A0SQmJpGe/tvZZBkZ6dSuXbuomzkupSX293v2c3JVV0s7uWp5du1x/WEZuzNJqp7wW5lOTGDnj/sA2PGD+595IJup8zeSdtpJviW0SL7uANnZ2QwbPIAhwy6iX/8LwxY31Pt91Canqr5U0J9vJYgc4cga6JPAJFVtAVxJ0Li7UEpNS2Pz5k1s3bKFrKwspk2dQq/efcMRutTEfnvxFoZ3bwrA8O5Nmb3o69zlgzqfRnxcDKecVIlGiVVY+uV3xMYIJ1Zyb39cbAw90+qzbtsPvpUnkq+7qjLm8ktp3KQpf7n+hmM/wUeh3u/CzocWjT4A3hSRCar6g9fkrIw7dxVgRNC6vwAhq5PHxcUxYeIk+vTqQSAQYMTI0TRLTg5VuKiP/dItPTizRSLVK53A5pdGcd/kxTw6bTmv3noeI85pxvZdv3DRQ+8CsOGbH3ljwSZWPD2cQ4HDjP3nfA4fVsqXjWPmfRdQJjaG2Bjho5XbeWHuumKXLUckX/fPFi7ktcmv0Lx5C9qntAbg3vsf5Lzze4Y8dqj3W/Jr05YWIjICNz1SAFgBvAlMwCW1RUCaqnYRkdOA6cBh4M+q+unRtpmSkqoLF0d7a71ksWsKlD7lyshyVU3Nu7w019Dwms55m89HHENW1S+BlmEplDHmuBVmxtrTROQDEVnr3W8pIn8LfdGMMaZoCjOw9jncRYazAVR1NTA0lIUyxpjjUZiEVl5V807oeCgUhTHGmOIoTELbLSIN8YY4iMhAYGdIS2WMMcehMAcFrsENGm0iIhm4wabDQ1oqY4w5DoW50PDXQHcRqQDEqOovx3qOMcZEQmFmrL0rz30AVPXvISqTMcYcl8I0OfcF3T4B6A1sCE1xjDHm+BWmyflY8H0ReRSIiumDjDHRpTBHOfMqDzTwuyDGGFNchelDW8Nvs1LEAjUA6z8zJUakz6U8cdi/Ixb7h9dHRSx2SVSYPrTeQbcPAd+pqg2sNcaUOAUmNBGJAd5W1eZhKo8xxhy3AvvQVPUwsEpEij6vtDHGhFlhmpy1gHUisoSgIRyqGp7pNY0xppAKk9DuDXkpjDHGB4VJaD1V9a/BC0TkYWB+aIpkjDHHpzDj0M7JZ9n5fhfEGGOKq6Drcl4FXA00EJHVQQ9VBBaGumDGGFNUBTU5XwPeBR4Cbg1a/ouq/hjSUhljzHE4akJT1b3AXmBY+IpjjDHH73jO5TQhMG/uHFomNya5SSPGPzIurLGvvGw0dWvXJKV1+MdPRzJ2OF7zq3s2Y+lj/Vj6j35c07NZ7vIx5zVlxcQLWfqPftw/3F2NbUinBnw+vm/u3y9TR9KyXrWQlCuSn7dAIECH1DZceEHvY69cRKUqoYnIPSJyU6TLkVcgEGDsddcwY9a7rFi9nmlTXmfD+vVhi3/xiJHMmD0nbPFKQuxwvObN6lRh1Nmn0fm2WXS4aQbnp9Sh4cmV6Jx8Mr3T6tL+xrdIu+EtJs5cC8DUBV/T8eaZdLx5Jpc9+SnbdmWyeqv/vTuR/rxNemIijZs2Dcm2S1VC84OI+H4t06VLltCwYSPqN2hAfHw8g4YMZfasIy4PGjKdzuxMtWqhqQmU1NjheM0bJ1ZhyaZdHMgKEDisfLr+W/q2q8tl5zbhsbdWk3XoMAC7fj54xHMHnVGfaQu/9rU8OSL5eUtPT2fOu28zavRlIdl+1Cc0EblDRDaKyPtAY29ZQxGZIyLLReRTEWniLa8hIm+IyFLv7wxv+T0i8qyIzANe9ruMO3ZkkJRUJ/d+YmISGRkZfocxQcLxmq/f/hNnND2JagllKRcfS4+2SSRWr8CptStxetOT+PjB3sy593zaNqx+xHMHnF6faQtCk9Ai+Xm7+caxPPDQI8TEhCb1RPWV00UkBXcN0Ta4ff0CWI676MsYVd0kIu2BfwLdgInABFVd4J2/OhfIqRunAJ1U9UA+ca4ArgCoU7fop72q6hHLcqY6N6ERjtd8Y8Ze/jFjDbPu7EHmwWzWbP2RQECJi4mhSoWydLl9NimNqvPKDV1IvmZ67vNSG1XnQFaA9dv3+FqeHJH6vL3z9mxq1qhJ25QUPpn/cUhiRHVCA84E3lTV/QAiMhM3jfjpwLSgN7Gs97870CxoeSURqejdnplfMgNQ1WdxSZKUlNQjPy3HkJiYRHr69tz7GRnp1K5du6ibMUUQrtf85Q838fKHmwC4Z1hbMn7YT+OkysxcvA2A5Zt3c/iwUr1SWXb//CsAg85owH9CVDuDyH3ePv9sIbNnz2TOnHf49eBBfv75Z0ZdMpx/v/yqbzGivsnJb5NT5ogB9qhq66C/pkGPdQxanhh0lat9hEhqWhqbN29i65YtZGVlMW3qFHr1tnP/Qylcr3mNSicAkFS9An3bn8K0hV8za8k3nNWiFgCNalUiPi42N5mJQP+O9Zgeov4ziNzn7b4HHuKrrels3LyVlydPoUvXbr4mM4j+hPYJ0F9Eynk1rT7AfmCLiAwCEKeVt/484NqcJ4tI63AUMi4ujgkTJ9GnVw9at2jKgEGDaZacHI7QAFwyfBhdzuzIlxs30rBeEi++8K+ojx2u13zyTV1ZNqE/0//anRueX8SefVm8/NEm6tesyNLH+vHS2C5c8dSnuet3anoyGT/sY+v3mb6XJUekP2+hJPm1p6OJiNwBXAJsA9KB9cAbwP/hpkYqA0xR1b+LSHXgKVy/WRzwiaqOEZF7gExVffRY8VJSUnXh4mUh2RdTMtkU3OFXrowsV9XUvMujvQ8NVX0AeCCfh87LZ93dwJB8lt/jf8mMMX6L9ianMaYUsYRmjIkaltCMMVHDEpoxJmpYQjPGRA1LaMaYqGEJzRgTNSyhGWOihiU0Y0zUsIRmjIkaUX/qk4l+kT4fOZLnUzb885sRi/3Vk/0jFvtorIZmjIkaltCMMVHDEpoxJmpYQjPGRA1LaMaYqGEJzRgTNSyhGWOihiU0Y0zUsIRmjIkaltCMMVHDEloJMW/uHFomNya5SSPGPzLOYofJnj17+NOQQbRu3pQ2LZqxeNHnYYsd6n2/vFtDPrzzbD6482yeGp1K2bgYkpMqM+uWs5h3e1feubULrU+pCkDVCvFMG9uJLyf04f4hLX0vS46DBw/SqWM72rVtRdtWydx3792+br9Un8tZlOtthlIgEGDsddfw9rvvkZiURKcOafTu3ZemzZpZ7BC7+YaxnNOjB69NnUZWVhb79+8PS9xQ7/vJlU9gdNeGdP37+xzMPszTl6VxQWoS/dKS+Mfb/+Ojdd/RLfkk7rgwmUETFnAwO8AjszbQpHZFGteu5EsZ8lO2bFnmvPchCQkJZGdn0+2sTpzb43zad+jgy/athlYCLF2yhIYNG1G/QQPi4+MZNGQos2fNsNgh9vPPP7NgwSeMHHUpAPHx8VSpUiUsscOx73ExwgllYomNEcrFx/Ht3oMoUPEEV4+pWK4M3+09CMCBrABLv/qBX7MP+1qGvESEhIQEALKzszmUnY2I+Lb9UpfQROQOEdkoIu8Djb1lrUVkkYisFpE3RaSqtzzNW/a5iIwXkbWhKNOOHRkkJdXJvZ+YmERGRkYoQlnsIFu+/prq1Wtw5WWj6ZDWlquuvIx9+/aFJXao9/3bvQd5+v3NLHngPFaMO5+fD2TzyYbvuXvaGv52YXOWPtCDOwc056G31vkWs7ACgQDtU1pTt3ZNunU/h3bt2/u27VKV0EQkBRgKtAEuBNK8h14G/qqqLYE1QE7D/t/AGFXtCAQK2O4VIrJMRJbt2r2ryOXKb/obP3+1LHb+DgUOsXLFF1x25RgWLf2CChUq8GiY+vFCve+Vy5ehR6tadLhzLm1vfZfy8bFc2K4Ol3Suzz3T15B2x1zunbaGxy5u61vMwoqNjWXx8pVs3prOsqVLWLfWv3pCqUpowJnAm6q6X1V/BmYCFYAqqjrfW+cloLOIVAEqqupn3vLXjrZRVX1WVVNVNbVG9RpFLlRiYhLp6dtz72dkpFO7du0ib+d4lNbYOfETk5Jo187VEPpfOJCVK1eELXYo9/3MJjX4Zvc+fszM4tBh5d2VO0htUI1BHeryzoodAMz6IiP3oEAkVKlShc5ndWHevDm+bbO0JTSAws4GGLaqQmpaGps3b2Lrli1kZWUxbeoUevXua7FD7OSTTyYpqQ5fbtwIwEcffkDTpk3DEjvU+57x4wHa1q/GCWViAejUpCabvv2F7/YcpOOp1d2yxjXYsivTt5iFsWvXLvbs2QPAgQMH+PCD92ncuIlv2y9tRzk/AV4UkXG4fe8DPAP8JCJnquqnwMXAfFX9SUR+EZEOqroI11QNibi4OCZMnESfXj0IBAKMGDmaZsnJoQpnsYM8NuEJRo0YTnZWFvXqN+CZ518IS9xQ7/uKrT/x9ooM5t7elUOHlXXb9zB5wVbWbt/L3we3IC4mhoPZAW6ZvDL3OYvuP5eEE8oQHxvDea1qM+yJhWz69hffygTw7c6dXD56BIFAgMN6mAEDB9OzV2/fti+Rnr443ETkDuASYBuQDqwH3geeBsoDXwOjvITWHngO2Ad8DHRW1TMK2n5KSqouXLwsdDtgjhDpz3A4+/3yKq1TcJcrI8tVNTXv8tJWQ0NVHwAeyOeh/AbCrPMOFCAitwKWqYwpwUpdQiuiXiJyG+512gaMjGxxjDEFsYRWAFWdCkyNdDmMMYVTGo9yGmOilCU0Y0zUsIRmjIkaltCMMVHDEpoxJmpYQjPGRA1LaMaYqGEJzRgTNWxgrfnDi+S5lJEWyfMpTx7xasRiH43V0IwxUcMSmjEmalhCM8ZEDUtoxpioYQnNGBM1LKEZY6KGJTRjTNSwhGaMiRqW0IwxUcMSmjEmalhCKwG2b99Oj+5dad2iKW1bJTPpiYlhi33w4EE6dWxHu7ataNsqmfvuvTtssQHmzZ1Dy+TGJDdpxPhHxoU19pWXjaZu7ZqktG4e1rgQ+dc9EAjQIbUNF17g3zUxg43p0ZjPxvXm84d7c9V5v7+Q8LU9m7Jn8nCqJZQFoGpCPLPu6E76v4bwyIi0YsUtVQlNRK4TkQ0iMjnSZQkWFxfHuEceY+WaDcxfsIhnnn6KDevXhyV22bJlmfPehyz5YhWLl61k3tw5LF60KCyxA4EAY6+7hhmz3mXF6vVMm/J62PYb4OIRI5kxe07Y4gWL5OsOMOmJiTQO0VXimyZV5pKup3L2Xe/S6ba36dEmkQYnVQQgsVp5uraoxfbdv12x/dfsAA9MW8Wdr31R7NilKqEBVwM9VfWinAUiEvET9GvVqkWbtm0BqFixIk2aNGXHjoywxBYREhISAMjOzuZQdnbYTvZeumQJDRs2on6DBsTHxzNoyFBmz5oRltgAnc7sTLVq1cIWL1gkX/f09HTmvPs2o0ZfFpLtn1a7Mss27+ZAVoDAYWXhhu/pnVYHgAcvTuHu178g+NrQ+38NsOjLXfyaHSh27FKT0ETkaaABMFNE9orIsyIyD3hZRE4RkQ9EZLX3v673nIYiskhElorI30Uks8AgPti2dSsrV64grV37UIfKFQgEaJ/Smrq1a9Kt+zm0ax+e2Dt2ZJCUVCf3fmJiEhkZ4UnkJUGkXvebbxzLAw89QkxMaL7+G9L3cHqTmlRNiKdcfCzntK5NUrXynN82iZ0/HmDtN3tCEhdKUUJT1THADqArMAFIAS5Q1T8Bk4CXvaukTwae8J42EZioqmnec0MqMzOTYYMHMP6xx6lUqVKow+WKjY1l8fKVbN6azrKlS1i3dm1Y4mrwz7SnNE0FFInX/Z23Z1OzRk3apqSELMaXO35m4qx1vHVrd974azfWfvMThw4rN17QnAenrwpZXChFCS0fM1X1gHe7I/Cad/sVoFPQ8mne7dc4ChG5QkSWiciyXbt3HVdhsrOzGTZ4AEOGXUS//hce1zaKq0qVKnQ+qwvz5oWnXykxMYn09O259zMy0qldu3ZYYpck4XzdP/9sIbNnz6Rxo3pcctFQPv7oQ0ZdMtz3OK/M/4qz/vYOPe97j58ys/hmVyan1EhgwUO9WP14P2pXK8/8B3pSs/IJvsYtzQltXwGPHVl1KGhl1WdVNVVVU2tUr1HkgqgqYy6/lMZNmvKX628o8vOLY9euXezZsweAAwcO8OEH79O4cZOCn+ST1LQ0Nm/exNYtW8jKymLa1Cn06t03LLEjLVKv+30PPMRXW9PZuHkrL0+eQpeu3fj3y/5P1Fi9kjuCmXRiefqk1eH1T7dw6tXTaTn2LVqOfYsdP+7nrDve4fu9B32NG/EO8RLiM2AornZ2EbDAW74IGABM9R4PTfCFC3lt8is0b96C9imtAbj3/gc57/yeoQqZ69udO7l89AgCgQCH9TADBg6mZ6/QHMrPKy4ujgkTJ9GnVw8CgQAjRo6mWXJyWGIDXDJ8GJ/O/5jdu3fTsF4Sd951LyNHXxqW2JF83cPh5b+cRbWK8Rw6pNz04lL27s8qcP3Vj/ejYrkylImLoVdqEheO+5CNGXuLHFfy68eIViKyFUgFrgUyVfVRb3k94AWgOrALGKWq34jIqcCrgABvA1eoamJBMVJSUnXh4mUh2wdjSopITsG997WLl6tqat7lpaqGpqr1vJv35Fm+FeiWz1MygA6qqiIyFLBMZUwJVqoS2nFIASaJO/S2Bxgd2eIYYwpiCa0Aqvop0CrS5TDGFE5pPsppjIkyltCMMVHDEpoxJmpYQjPGRA1LaMaYqGEJzRgTNSyhGWOihiU0Y0zUKFXncoaDiOwCthVjE9WB3T4Vx2Jb7GiNfYqqHjG1jSW0EkZEluV30q3FttgW+9isyWmMiRqW0IwxUcMSWsnzrMW22Bb7+FgfmjEmalgNzRgTNSyhGWOihiU0E3EiUuo+h1KaLkAaRqXug2QKFu4vmog0Ae4WkYQwx40Nul0xzLFFvc5rEWkTztj5lSWa4lpCK+XyfrA0jEeJvJpZElADuF5EyocpbizQXUS6iMh1wAgRCdt09EHJ7GLgXhGpHK7YOUSkfk5ZwpnUgmLFefdjC1i9yCyhlQA5b7KInCYiaSJSNlxxg75cF4nInSIyQEQahiF2jKoeVtX3gZVAc+DaMCU1ASoB44HrgHdU9VA4m74i0gHoB4xV1b1+f7GPEjPnc3Yq8I6I3AHhS2o5nzcRaQdsEJGTVDXg575bQisBvDe5LzANGAPMFZGUcMQF8GoplwNbgL8B3cMQ+7AXeyzui61AZ+AWEakQ4tiHgCVAFu4i001EpFxOmUIhOGF4P1hdgFOBC70veiDUScX7nPXGXcZxCTBYRO4Jeiwc8c8Gzse93x+LyMnevvuSiyyhlQBe9f9q3Id8NnAiLrmEKl6DoNuVcV+srkB54HvgeRGJD0VtKc8X+ySgDzBIVYcCTwA1gatDWVPzagbbcNdifRfojUuqiEgzETnZ53jBNeG6QDlVHQf8E9fk7guhTyoiUgW4G/g/YBRwMXCOiNyWEz9Usb34jYF/AfOA03Gf9SXe+3HYj6RmCa1k2AssBK4CbgEuUNUfRaSb3307IlIO19y4x1v0M64JttCL20NVA7gPe2ufY8cEfbF74L7MtYBO3iof4l6Lobjmp+9fbhG5FnhVRMYDg1X1ddwFpE8XkSnA67jag2+C9nks7gs9RUQeB14DtgNnisjg4HVDJICb4WKrVxtd55XhUhH5Swjj5tgHfKiqnwO7VfVmYBXwkYjU8JJasd5zS2gRENSXUVZE4oFMoAEwCLhUVb8Wkc7Ak7jak19xk1T1AK5G0F9E/uZ9gd7HNb9e8NYbDtwAfOtXbPhdM7MjcDPwBa4f6wIROd1rCq7zyvOi319uERkJDMM1r08BbhKRW1T1BVwiWw38SVW/8zOuF7sf0BPoAawFWqnqz8BzwI9AG/HxSK94vNu1RaSsqv4CLAKme03sAPA18AZwtog08yt+Thm8//Heor1AioiMDnpvXwV2Ai+LyAnFfc/tQsMRENRnNhr4DtfUmgA8DAwXkV+BwcBfVXVDceN5H6wTccMjblHVL0WkPzDbi/U0UAe4RkQuwX3ZB6vq18WN7cU/DfjO6/zug6ulXOW9DkuBisC/ReQTXNO3p6p+70fsoDKkAr/gmpcX4Q4KXAc8LCKxqvoQrj8tVPYAj+Fq4C2Bc73ldXFJvaKqZvoVLKhWeB6umbnJ63y/HVcD/UJEXgCuBEYA1fC5guO9vz2AMSLyHTAf92O6RERqAbtwLYHbgSG+xFdV+wvzH9AY+Nh7E68DNgJNgfq4vo1bgDNzPpM+xj0BOBO42rvfENgA/MW7X80rRw2f4glQFpgIVA1avhj4POh+LNAGV4OpH4LX+yrgTaARbojIW0B177H/ArNy7vu13/m8Dl2AdGBm0PLLcLWjCj7Grgn8Cdcfmgh86b3np3mfq4W4H5ChuGSSDHTE1Zbr+vy6dwDWA/1xCXyr914kAg/h+hBb4A5CLQGqFTum3x8e+zvmm9zS+wLdE7TsUuB/wBkhiBeT535v4HNgtHe/Ia6p9WAIYsd6/8sA7YBJQBlv2TJgRhhe777e/p3i3a+F66s73ftCv+pnMssT+1pcrew5XA35Zu8L3gO4zStXss8xL8LVgC/xksX/BX8OgKeAi4LWT8M1Q1v5/J5X9RLaw0GP1eC35nbOsk7AJqC5H/GtyRl+X+P6zFJFJAnIUNV/iUgZ4HURaQ3sVde/UWz6W79VGq5P7G1gBzDB66R/XkQGAi+JSHVV9W1K5qB9qAH8gPuC3SAi/1DVVBH5REQ+VNVufsXMR21giqpuE5EyqrpTRN4G/oxrWl/l1z6LSG1gj6ruF5FrcEdOr8DVDv+mqteLyGFcjakarln/Pz9i51DVyd7R445ejAtEZImq/ttb5Qcg+Cju90A/VS1Wf6mI1PPib/WGZvwF98PdJahsu0TkfaCC95xYYD/QQ33q3gjpr6P9/db8wA0cbYVrXpXF1QyeBBKD1k3yMW4Kv/06j8T9Mr4FvIKrJbYGPgCu8dYp42Ps04Gh3u1rcEeyHsN1vC/GNX1yamrz/NzvfMpyPm5oRuOgZb2916Scj3ESvffzSlyN9CZcIr8R9yNygvfe5+x3jF+x85TjXGAu8CnuCObjuCOptwMX4gYxd/E5Zj1cC6M50AR3cKml91jOe56Ma1quBdqF6v22+dBCKGf8kXcA4G5cEyMLeAb3xj4DHAbuVtV0n2MnAVNwtbFM3FHLqrhf7qG4I32tcDWV4aq618fYvXDNy5dxH/Z7cf1XjYELcJ2/q4AbNYSDWb2yVMIl0Bhcp38VXO1hmKpu9jGO4DrXW+CO1HbDHWjZiXt9D3lDRgK4913V5y+fiNTE9QlerqobvFriSbiDAKfiWgeLVHW2jzEFGICrdb6A6/jfDTygXq1QRCYCCbjPwj9U9W2/4h8hVJmyNP/hqtQJ3u02wCe4q9xch+sveBbXp1QW9yvqaz9KUDkSgRnA/4KW1cT1o/TPKWuIYp+DS9qTvftlcQccHsPVFF4Faobp/aiFOwPjHVyNoaXP28+pGFyCGyw6B5fEd/PbAZiRuP6zU0O4n1Vx/aOdvftlcP1383A/YBJcXh/jVsF1Z2zBHQC4CXgUOCtonTK4I7m+xw/+s3FoPvNG3o8DenuDWDOBsbgm3ghgOO7L/SDQHtdBu86n2DFBt+NVNQN3BsLPIvIcgLrhEIKrnYHrw/Cdqr4H3AH0FJEhqvqruiEojXD9TMPV56EZBZRlp6o+jevTGqGqq33evorIRbja7u3AZlxN7GVgrIj8Hy6hDFTVTX7GzlOOn3Cnz3URkeaqmg1MxfWbfaJeNsn576OfgRW4YWAxuB+NA0APEenmxcxWNw4uFPFzWULzmbqm22ZcDeU8YLuqfoE7mvSYqi7GHVXaCezy883V3w4AjAb+ISJ/x3UMDwBOEZH53jizZFxzNKQfLlWdgTuS+JCI3Os1RetSvOuWFqc8WaqaFaLNNwb+4yXLG3Bf8iRc8/JO3Ni69SGKHew/uNrQYyLyAG7IzDOqujFUAdVNMnA+7ojlw7h+vKdwCe58Eakaqtj5Fcb+/Kt6xwTdvhLXAX8h7gM2CjdSejSuY/b0EJXhIlxT7xzg38AjuI7xRH4bhR+yTvijlKkfrsYyBagX6fcphPv4FkHdB7g+uweBSmEuS0VcUrmBoGZfmGK3wY1tvALX1D8tnPHtoIBPgg4AJKnXwS8ig3Af9Omq+qaIXIarqc1Q1Xf8jo+rcT8IrFZ3+L4qLpGeqqpXecMKUNUdfsYuZPnOwp1DGJHaWaiJO/H7ZlwH/IdAOdyP2hVazCERfzTiZoqZjhsc7uvBrmPGtoTmH+80k0dxo66zcX0qPXAdpbNxb3KMuiNeuTMwFCPeEdvwjmydhTuCuF3cbKxv4460fVOceKZg3g/Ghd7fIdx7sCaypYoMEamoXp9ZWONaQvOH96t0Ce6w+fe4o1ptcGOeLsGdo3iDhubE5wG4U1sm4w44jMJ19k/HdcL/FeirrtPYhJi4+dxEfTw384/Gjx/s44prCe34BTUzqwJfAetU9UxvBLTiDpm/q6rTRaSuXzWk4A+LuJkxbsH116Tgjqgm4E476Qb8Ctyiqiv9iG1MSWZHOY9TUDI7H3e+YF/cFDCXqmpA3RHHH3Cn1xCiZHYyrrP9QlUdg6uh3Q4cUNV7cf13Ay2ZmdLCEtpx8pJZO1zS+EZVF+CGafxTRCZ442/OAXzrQ8mTzK7FzZzwN1wSQ1Ufxw3qHC8inVX1J3VzbhlTKliTswjETV3dTd0J3WVxY36aqeqpQeucDryHO9J1hbqToWPVp5PNvRidcIN0H8KdXnMFsFlV7/YevxLX1LWDAKZUsRpa0fwKrBWRmqr6K+4oZqY3EhwAVf0Md5SxHa7GBu58zWITkRgRaYSbE74y7jzNz3HnTTYUN600qvqMJTNTGllCKySvlpUBLMVdrWaclzT64JLJxJx1VXUZbsbZu73xScWJmzvHuroR2ZtxMzjUwg2ezMbNZvAsUFVEqhcnnjF/ZNbkLISgAwANcaP9y+NGhb+hqg94M1tMBVap6tUiEueNNTtBVQ/6VIYRuGEg3+M6/08B7sNN3T0Dd35mvF/xjPkjsgkeC8FLZn2A+3HTCH+F64ifICIBVR0nIkNxtSbUXewDXBO12ERkDO6Uqf/D9ZnNwl1Q5V7c7BXZ6qZksWRmSjVLaIUg7irXd+GOWp6Da94dAK4HnvVqZPfjJtLLdbwDC/M5iHAK7oIpH3mPbwfuV9VB3gnIa48njjHRxvrQCicdNw1Pa9zkgK1wA1cv9u5/6lcgb5BuM+92T+90mlq4k85zfAT86jVpp0fr+ZHGFJUltEJQ1XRVXYo7ejnZ65h/ETdlzHJVnR/ceV9MSbhL2b0MPO6dSD4WaC0ij3rrdMTV2ir4FNOYqGBNzqJZA1wp7mrmfYA/5wyP8OtEc1VdIyJ7cLPb3upte4+4abzfEpFXcPOZXayqPxQnpjHRxo5yFoE3P31/3GlO//J7CiAvRifceaAn4a5T+QkwR1W/94aABIA4O9HcmCNZQjsOQcMyfJ1RQERq4K7XeAKub647bsrut3BX06mOm5Lm0NG2YUxpZgntOIRyahRx18+8EDfW7TZcv1133EGIq1V1VSjiGhMNLKGVACIyCmikqnd499vijmoewl0O7GcRSSjN82sZUxh2lDMC8jki+jHuYMNtAOouqrION+btDm9cmiUzY47BjnKGWT5TADXHHT3tBcwWkcOq+jDwC2682QQ/Z+owJppZkzNCRORqYAiuabkad7mzJbiZMz4GzgB6aAgvP2ZMtLEaWgR4wz/aAkNx52QuxQ2UrYm7/sB+3KlOYb1ijjF/dFZDixBvgsgmuLMBuoq76vkPuNkzxmnoLohrTNSyGlqEqOqvIrIfiBORFrhZNN4GXrRkZszxsRpaBHm1tLG4cWYnAYNV9X8RLZQxf2CW0CJMRMoAJwOHvRlxjTHHyRKaMSZq2MBaY0zUsIRmjIkaltCMMVHDEpoxJmpYQjN/aCLSRURme7f7isitBaxbxTvlrKgx7hGRmwq7PM86L4rIwCLEqicidtGb42QJzZRIIhJb1Oeo6kxVHVfAKlVwF7sxUcoSmgkrrwbyPxF5SURWi8h0ESnvPbZVRO4SkQXAIBE5V0Q+F5EvRGSaiCR4653nbWMBbjLMnG2PFJFJ3u2TRORNEVnl/Z0OjMNd5X6liIz31rtZRJZ6Zbk3aFt3iMhGEXkfdzGcY+3X5d52VonIGzn75OkuIp+KyJci0ttbP1ZExgfFvrK4r62xhGYiozHwrKq2BH7m97Wmg6raCXgf+BvQXVXbAsuAG0TkBOA53EVqzsQNSs7PE8B8VW2FmwhgHe6iM1+pamtVvVlEzgVOBdrhLlGYIiKdRSQFN3FAG1zCTCvEPv1XVdO8eBuAS4Meq4ebebgX8LS3D5cCe1U1zdv+5SJSvxBxTAHsXE4TCdtVdaF3+1XcFa5yLtE31fvfAXd90oXefJjxwOe4E/q3qOomABF5FbginxjdcDOX4M0nt9e75mmwc72/Fd79BFyCqwi8qar7vRgzC7FPzUXkflyzNgGYG/TYf1T1MLBJRL729uFcoGVQ/1plL/aXhYhljsISmomEvKenBN/f5/0X4D1VHRa8ooi0zuf5x0uAh1T1mTwxxh5HjBeBfqq6SkRGAl2CHstvfwV3GcTgxIeI1CtiXBPEmpwmEuqKSEfv9jBgQT7rLALOEJFGACJSXkROA/4H1BeRhkHPz88HwFXec2O9Oeh+wdW+cswFRgf1zSWKSE3cpQP7i0g5EamIa94eS0Vgp3du7kV5HhskIjFemRsAG73YV3nrIyKniYhdOLqYLKGZSNgAjBCR1UA14P/yrqCqu4CRwOveeouAJqp6ENfEfNs7KLDtKDH+AnQVkTXAciDZuzDzQhFZKyLjVXUe8BrwubfedKCid02HqcBK4A3g00Ls053AYuA9XNINthGYD7wLjPH24XlgPfCFN0zjGazFVGx2croJK69JNVtVm0e6LCb6WA3NGBM1rIZmjIkaVkMzxkQNS2jGmKhhCc0YEzUsoRljooYlNGNM1LCEZoyJGv8PW5kai0/dfIoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "class_dict = {0: 'airplane',\n",
    "              1: 'automobile',\n",
    "              2: 'bird',\n",
    "              3: 'cat',\n",
    "              4: 'deer',\n",
    "              5: 'dog',\n",
    "              6: 'frog'}\n",
    "\n",
    "cmat = np.array([[972, 0, 1, 1, 1, 1, 3],\n",
    "                 [0, 1123, 3, 1, 0, 1, 2],\n",
    "                 [2, 0, 1025, 0, 0, 0, 1],\n",
    "                 [0, 0, 0, 1005, 0, 2, 0],\n",
    "                 [0, 1, 1, 0, 967, 0, 4],\n",
    "                 [0, 0, 0, 6, 0, 881, 3],\n",
    "                 [2, 3, 0, 1, 3, 4, 941]])\n",
    "\n",
    "fig, ax = plot_confusion_matrix(\n",
    "    conf_mat=cmat,\n",
    "    class_names=class_dict.values(),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It can be hard to notice the cells where the models makes mistakes. With a log-normalized colormap, these mistakes off the diagonal become easier to see at a glace:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "\n",
    "fig, ax = plot_confusion_matrix(\n",
    "    conf_mat=cmat,\n",
    "    class_names=class_dict.values(),\n",
    "    norm_colormap=matplotlib.colors.LogNorm()  \n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## plot_confusion_matrix\n",
      "\n",
      "*plot_confusion_matrix(conf_mat, hide_spines=False, hide_ticks=False, figsize=None, cmap=None, colorbar=False, show_absolute=True, show_normed=False, class_names=None, figure=None, axis=None, fontcolor_threshold=0.5)*\n",
      "\n",
      "Plot a confusion matrix via matplotlib.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `conf_mat` : array-like, shape = [n_classes, n_classes]\n",
      "\n",
      "    Confusion matrix from evaluate.confusion matrix.\n",
      "\n",
      "\n",
      "- `hide_spines` : bool (default: False)\n",
      "\n",
      "    Hides axis spines if True.\n",
      "\n",
      "\n",
      "- `hide_ticks` : bool (default: False)\n",
      "\n",
      "    Hides axis ticks if True\n",
      "\n",
      "\n",
      "- `figsize` : tuple (default: (2.5, 2.5))\n",
      "\n",
      "    Height and width of the figure\n",
      "\n",
      "\n",
      "- `cmap` : matplotlib colormap (default: `None`)\n",
      "\n",
      "    Uses matplotlib.pyplot.cm.Blues if `None`\n",
      "\n",
      "\n",
      "- `colorbar` : bool (default: False)\n",
      "\n",
      "    Shows a colorbar if True\n",
      "\n",
      "\n",
      "- `show_absolute` : bool (default: True)\n",
      "\n",
      "    Shows absolute confusion matrix coefficients if True.\n",
      "    At least one of  `show_absolute` or `show_normed`\n",
      "    must be True.\n",
      "\n",
      "\n",
      "- `show_normed` : bool (default: False)\n",
      "\n",
      "    Shows normed confusion matrix coefficients if True.\n",
      "    The normed confusion matrix coefficients give the\n",
      "    proportion of training examples per class that are\n",
      "    assigned the correct label.\n",
      "    At least one of  `show_absolute` or `show_normed`\n",
      "    must be True.\n",
      "\n",
      "\n",
      "- `class_names` : array-like, shape = [n_classes] (default: None)\n",
      "\n",
      "    List of class names.\n",
      "    If not `None`, ticks will be set to these values.\n",
      "\n",
      "\n",
      "- `figure` : None or Matplotlib figure  (default: None)\n",
      "\n",
      "    If None will create a new figure.\n",
      "\n",
      "\n",
      "- `axis` : None or Matplotlib figure axis (default: None)\n",
      "\n",
      "    If None will create a new axis.\n",
      "\n",
      "\n",
      "- `fontcolor_threshold` : Float (default: 0.5)\n",
      "\n",
      "    Sets a threshold for choosing black and white font colors\n",
      "    for the cells. By default all values larger than 0.5 times\n",
      "    the maximum cell value are converted to white, and everything\n",
      "    equal or smaller than 0.5 times the maximum cell value are converted\n",
      "    to black.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `fig, ax` : matplotlib.pyplot subplot objects\n",
      "\n",
      "    Figure and axis elements of the subplot.\n",
      "\n",
      "**Examples**\n",
      "\n",
      "For usage examples, please see\n",
      "    https://rasbt.github.io/mlxtend/user_guide/plotting/plot_confusion_matrix/\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.plotting/plot_confusion_matrix.md', 'r') as f:\n",
    "    s = f.read() \n",
    "print(s)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
